#pragma once
#include <list>
#include <string>
#include "IObject.h"

class SDLScene : private IObject
{
public:
	friend class SDLEngine;

	SDLScene(std::string _sceneID);
	SDLScene(const SDLScene& _source);
	SDLScene(const SDLScene *const _source);
	~SDLScene();

	//Operators overload
	SDLScene& operator=(const SDLScene& _source);

	bool AddComponent(IObject* _component);
	bool RemoveComponent(IObject* _component);

	//Getters
	std::string GetName() const { return m_Name; }

protected:

	std::string m_Name;
	std::list<IObject*> m_Components;
	bool Contains(IObject* _component) const;

	virtual void Start();
	virtual void Update();
	virtual void Draw();
	virtual void Stop();
};

